package com.dzu.easy;

import java.util.Arrays;

/**
 * @author ZhaoDong
 * @date 2022/9/7 11:19
 * @description 414. 第三大的数
 * 给你一个非空数组，返回此数组中 第三大的数 。如果不存在，则返回数组中最大的数。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：[3, 2, 1]
 * 输出：1
 * 解释：第三大的数是 1 。
 * 示例 2：
 *
 * 输入：[1, 2]
 * 输出：2
 * 解释：第三大的数不存在, 所以返回最大的数 2 。
 * 示例 3：
 *
 * 输入：[2, 2, 3, 1]
 * 输出：1
 * 解释：注意，要求返回第三大的数，是指在所有不同数字中排第三大的数。
 * 此例中存在两个值为 2 的数，它们都排第二。在所有不同数字中排第三大的数为 1 。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/third-maximum-number
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test414 {

    public static void main(String[] args) {
        int i = thirdMax(new int[]{1, 1, 2});
        System.out.println(i);
    }

    public static int thirdMax(int[] nums) {
        Arrays.sort(nums);

        if (nums.length < 3) {
            return nums[nums.length - 1];
        }
        int count = 0;
        int[] arr = new int[3];

        for (int i = nums.length - 1; i >= 0; i--) {
            if (count == 3) {
                break;
            }
            if (count != 0 && arr[count-1] == nums[i]) {
                continue;
            }
            arr[count] = nums[i];
            count++;
        }

        return count == 3 ? arr[count - 1] : arr[0];
    }

}
